身為一個邊緣人,
沒有 Instagram 帳號,
卻有台灣沒什麼人用的 Twitter 帳號也是很合理的。
其實 Twitter 上很容易得到國外第一手即時資訊,
常常看到好幾天之後才在 Facebook 或台灣的媒體看到消息,
很適合我這種資訊焦慮症的人(?
Twitter 也很容易跟一些很有名的人直接交流,
像上一篇翻譯文章的授權,
我就是直接在 Twitter 上問作者,
大概五分鐘之內,沒錯,就是短短幾分鐘之內,就收到作者同意的回覆。
總之,
我平常在用 Twitter 的時候有個習慣,
就是把我看到覺得值得保留下來的 tweet 分成兩類,
一類是比較不嚴肅的,把該 tweet 私訊給自己。
另一類是比較嚴肅的,把該 tweet 私訊給另外一個 RSS bot 帳號。
(這個 RSS bot 有機會的話會發篇文章講一下)
這裡要來用 Python 寫個程式,
把今年存下來的這兩大類 tweet 抓出來,
其實我不確定是不是一定會成功,
大概只有 87% 的把握,
總之接下來就一步步講一下要怎麼做。
(謎之音:最愛寫這種無用的小程式了。)
pip install python-twitter
因為兩個的作法類似,
這邊就以抓出比較嚴肅一點的 tweet 作為範例,
幾行就可以寫完了。
#!/usr/bin/env python3
import urllib
import twitter
# Fill these contants by yourself.
CONSUMER_KEY = ""
CONSUMER_SECRET = ""
ACCESS_TOKEN_KEY = ""
ACCESS_TOKEN_SECRET = ""
MY_TWITTER_ID = 0
MY_BOT_TWITTER_ID = 0
api = twitter.Api(
consumer_key=CONSUMER_KEY,
consumer_secret=CONSUMER_SECRET,
access_token_key=ACCESS_TOKEN_KEY,
access_token_secret=ACCESS_TOKEN_SECRET,
)
# Twitter API limitation:
# "Last 30 days DMs" or "Up to 200 DMs which created before 30 days"
sent_direct_messages = api.GetSentDirectMessages(count=200)
for dm in sent_direct_messages:
if dm.recipient_id == MY_BOT_TWITTER_ID:
try:
# Got t.co url in DM, use urllib to get its real Twitter Status URL.
with urllib.request.urlopen(dm.text) as response:
real_url = response.geturl()
except Exception:
raise
else:
print("+ <{}>".format(real_url))
開一個 gist 放個程式碼:https://gist.github.com/M157q/a90f5d2948442dc482e35d671b074c6f
直接以網址呈現:
(其實應該可以直接 embed tweet 啦,但我有點懶得弄。)
在寫這篇的時候發現,
最近 Twitter 好像針對這需求有了一個新的 Bookmark 功能,
看了一下,好像還不能分類就是,
所以我應該還是會繼續用這樣的方式當作 bookmark。
然後也發現好像多了個 Account Activity API,
可以設定 webhook 即時接收帳號的事件,
可能可以做到類似聊天機器人這樣事件觸發式的對話。
如果是這裡的用途的話,
可以在我每次發送私訊的時候,
就直接透過 webhook 把該 tweet 的內容存在資料庫裡,
這樣就不會受 Twitter API 的限制了,
有空的話再來弄吧。
如果覺得我的文章不錯的話,
歡迎按讚、追蹤、訂閱、留言、分享,
也可以利用像是 Feedly 等 RSS Reader,
直接訂閱我的部落格:https://blog.m157q.tw。
因為 iThome 這邊未來我不保證持續更新,
雖然目前用起來沒太大問題,
但就是覺得要管兩個地方有點麻煩。